/**
 * API服务模块 - 封装所有接口调用
 */

// 设置axios默认配置
axios.defaults.baseURL = "http://localhost:8080/api";
axios.defaults.headers.post['Content-Type'] = 'application/json';

// 请求拦截器 - 添加token
axios.interceptors.request.use(
    config => {
        const token = localStorage.getItem('token');
        if (token) {
            config.headers['Authorization'] = token;
        }
        return config;
    },
    error => {
        return Promise.reject(error);
    }
);

// 响应拦截器 - 处理错误
axios.interceptors.response.use(
    response => {
        return response;
    },
    error => {
        if (error.response) {
            // 处理401未授权错误
            if (error.response.status === 401) {
                // 清除本地存储的登录信息
                localStorage.removeItem('token');
                localStorage.removeItem('username');
                localStorage.removeItem('userId');
                
                // 跳转到登录页面
                window.location.href = './login.html';
            }
        }
        return Promise.reject(error);
    }
);

// API服务对象
// 在ApiService对象中添加分类相关接口
const ApiService = {
    // 用户相关接口
    user: {
        // 登录
        login(username, password) {
            return axios.post("/user/login", { username, password });
        },
        
        // 注册
        register(userData) {
            return axios.post("/user/register", userData);
        },
        
        // 获取当前用户信息
        getCurrentUser() {
            return axios.get("/user/profile");
        },
        
        // 更新用户信息
        updateUser(userId, userData) {
            return axios.put(`/user/${userId}`, userData);
        },
        
        // 检查用户名是否存在
        checkUsername(username) {
            return axios.get(`/user/check-username?username=${username}`);
        },
        
        // 检查邮箱是否存在
        checkEmail(email) {
            return axios.get(`/user/check-email?email=${email}`);
        }
    },
    
    history: {
        // 添加浏览记录
        addViewHistory(bookId) {
            return axios.post("/history/add", {
                bookId: bookId,
                actionType: "VIEW"
            });
        },
        
        // 添加加入购物车记录
        addCartHistory(bookId) {
            return axios.post("/history/add", {
                bookId: bookId,
                actionType: "CART"
            });
        },
        
        // 添加购买记录
        addOrderHistory(bookId) {
            return axios.post("/history/add", {
                bookId: bookId,
                actionType: "ORDER"
            });
        },
        
        // 获取用户浏览过的图书
        getViewedBooks(limit = 10) {
            return axios.get("/history/viewed-books", {
                params: { limit }
            });
        },
        
        // 清空历史记录
        clearHistory() {
            return axios.delete("/history");
        }
    },
    
    book: {
        // 获取所有图书
        getAllBooks(params) {
            return axios.get("/book/all",{ params });
        },
        
        // 按分类获取图书
        getBooksByCategory(category) {
            return axios.get("/book/all", {
                params: { categoryId: category }
            });
        },
        
        // 搜索图书
        searchBooks(keyword, categoryId) {
            return axios.get("/book/all", {
                params: { keyword, categoryId }
            });
        },
        
        // 获取图书详情
        getBookById(id,params) {
            return axios.get(`/book/${id}`,{ params });
        },
        
        // 获取热销图书
        getHotBooks(limit = 10) {
            return axios.get("/book/hot", {
                params: { limit }
            });
        },
        
        // 获取推荐图书
        getRecommendBooks(limit = 10) {
            return axios.get("/book/recommended", {
                params: { limit }
            });
        },
        
        // 获取抢购图书
        getFlashSaleBooks(limit = 10) {
            return axios.get("/book/flash-sale", {
                params: { limit }
            });
        },
        
        // 高级搜索图书
        advancedSearch(params) {
            return axios.get("/book/all", { params });
        },
        
        // 添加猜你喜欢API
        getYouMayLikeBooks(userId, categoryId, limit = 10) {
            return axios.get("/book/you-may-like", {
                params: { userId, categoryId, limit }
            });
        }
    },
    
    // 购物车相关接口
    cart: {
        // 获取购物车
        getCart() {
            return axios.get("/cart");
        },
        
        // 添加商品到购物车
        addToCart(bookId, quantity = 1) {
            return axios.post("/cart/add", { bookId, quantity });
        },
        
        // 更新购物车商品数量
        updateCartItem(itemId, quantity) {
            return axios.put(`/cart/${itemId}/${quantity}`);
        },
        
        // 删除购物车商品
        removeCartItem(itemId) {
            return axios.delete(`/cart/${itemId}`);
        },
        // 批量删除购物车商品
        removeCartItems(itemIds) {
            return axios.delete(`/cart/remove-batch/${itemIds}`);
        },
        
        // 清空购物车
        clearCart() {
            return axios.delete("/cart/clear");
        }
    },
    
    // 分类相关接口
    category: {
        // 获取所有分类（树形结构）
        getAllCategories() {
            return axios.get("/categories");
        },
        
        // 获取所有顶级分类
        getAllParentCategories() {
            return axios.get("/categories/parent");
        },
        
        // 获取分类详情
        getCategoryById(id) {
            return axios.get(`/categories/${id}`);
        },
        
        // 获取子分类
        getChildCategories(parentId) {
            return axios.get(`/categories/${parentId}/children`);
        }
    },
    // 订单相关API
    order: {
        // 获取用户所有订单
        getOrders() {
            return axios.get("/order");
        },
        
        // 获取订单列表（带分页和筛选）
        getOrderList(params) {
            return axios.get("/order", { params });
        },
        
        // 获取订单详情
        getOrderDetail(orderId) {
            return axios.get(`/order/${orderId}`);
        },
        
        // 创建订单
        createOrder(orderData) {
            return axios.post("/order", orderData);
        },
        
        // 取消订单
        cancelOrder(orderId) {
            return axios.put(`/order/${orderId}/status`,{
                status: "已取消"
            });
        },
        // 取消订单
        deleteOrder(orderId) {
            return axios.delete(`/order/${orderId}`);
        },
        
        // 支付订单
        payOrder(orderId, paymentMethod) {
            return axios.post(`/order/${orderId}/pay`, { paymentMethod });
        },
        
        // 确认收货
        confirmReceive(orderId) {
            return axios.put(`/order/${orderId}/status`,{
                status: "已完成"
            });
        },
        
        // 获取物流信息
        getOrderLogistics(orderId) {
            return axios.get(`/order/${orderId}/logistics`);
        }
    },
};

// 导出API服务
window.ApiService = ApiService;